Skip to content

Add Linode (Akamai) cloud module set#353

Merged
anshulsao merged 5 commits into
mainfrom
worktree-linode-modules
Jun 9, 2026
Merged

Add Linode (Akamai) cloud module set#353
anshulsao merged 5 commits into
mainfrom
worktree-linode-modules

Conversation

@anshulsao

Copy link
Copy Markdown
Contributor

Summary

Adds the Facets redesign-pattern module set for Linode (Akamai Cloud) so blueprints can target Linode as a first-class cloud. Naming derives from the AWS/GCP conventions; auth and object-storage follow the OVH non-hyperscaler precedent.

Modules (intent / flavor → output type)

Module Output type Notes
cloud_account/linode_provider @facets/linode_cloud_account (new) single API-token auth (secret-ref)
network/linode_vpc @facets/linode-vpc-details (new) linode_vpc + subnet
kubernetes_cluster/lke @facets/lke (new) + @facets/kubernetes-details exposes k8s+helm providers; optional network input places nodes in a VPC subnet
kubernetes_node_pool/lke @facets/kubernetes_nodepool (reused) linode_lke_node_pool
object_storage/linode @facets/linode-object-storage (new) bucket + scoped S3 access key
postgres/linode @facets/postgres (reused) linode_database_postgresql_v2, reader/writer
service/k8s @facets/service (reused) cloud-agnostic (no pod IAM — Linode has no IRSA/workload-identity equivalent)

Project type

Adds project-type/linode wiring the Linode cloud modules plus cloud-agnostic Kubernetes modules (KubeBlocks datastores, service/k8s, helm, ingress, cert-manager, operators, monitoring). AWS/GCP/Azure cloud modules are intentionally excluded.

Provider

linode/linode >= 3.0.0 (latest 3.13.0). required_providers declared in versions.tf for non-hashicorp resolution (benign raptor warning, same as OVH).

Testing

  • All modules pass raptor create iac-module --dry-run (terraform fmt/init/validate against the real provider schema) and were published to the demo control plane.
  • A wired linode-demo project (all 7 resources) is assembled on the demo CP, ready for raptor plan once a Linode API token is available.
  • ⚠️ Not yet applied — no real Linode infrastructure provisioned. Trivy not installed locally, so security scans were skipped (not run).

Follow-ups

  • Apply/plan validation with real Linode credentials.
  • Catalog (index.html) card + internal pages (OVH is also absent there).
  • Managed-registry publish (facets/linode) if desired.

🤖 Generated with Claude Code

anshulsao and others added 4 commits June 8, 2026 18:00
Build the Facets redesign-pattern module set for Linode (Akamai Cloud) so
blueprints can target Linode as a first-class cloud.

Modules (intent/flavor):
- cloud_account/linode_provider  -> @facets/linode_cloud_account
- network/linode_vpc             -> @facets/linode-vpc-details
- kubernetes_cluster/lke         -> @facets/lke + @facets/kubernetes-details
- kubernetes_node_pool/lke       -> @facets/kubernetes_nodepool
- object_storage/linode          -> @facets/linode-object-storage
- postgres/linode                -> @facets/postgres
- service/k8s (generic)          -> @facets/service

Naming derived from AWS/GCP conventions; auth and object-storage modeled on
the OVH non-hyperscaler precedent (single API token; S3-compatible creds).
Provider linode/linode (>= 3.0.0). LKE cluster takes an optional network input
to place nodes in a VPC subnet. service/k8s is cloud-agnostic (no pod IAM —
Linode has no IRSA/workload-identity equivalent).

Also adds a Linode project type (project-type/linode) wiring the cloud modules
plus cloud-agnostic Kubernetes modules, and a README preview section.

All modules validate via raptor dry-run and were published to the demo control
plane; a wired linode-demo project is ready for plan testing once Linode
credentials are available. Not yet applied (no real infra provisioned).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- project-type/linode/ONBOARDING.md: step-by-step cloud onboarding
  (API token + scopes, project-type import, cloud account setup,
  infra wiring, plan/deploy, region/type reference, gotchas).
- README: upgrade the Linode section to full onboarding parity
  (Praxis prompt + raptor import + token prerequisite + what's included).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Remove project-type/linode/base/** (no starter blueprint); projects
  created from this type start empty.
- Drop gitUrl/gitRef/baseTemplatePath from project-type.yml (only needed
  for --include-base-template) and lowercase the name to `linode` to match
  the aws/gcp convention.
- Update README + ONBOARDING import commands: file-based import with
  --modules-dir/--outputs-dir, no --include-base-template.

Verified: `raptor import project-type -f project-type/linode/project-type.yml`
updates the project type to 30 mapped resource types, allowedClouds=[KUBERNETES],
empty template (no base resources).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Validated end-to-end on real Linode infra (us-ord); fixes for issues the
live deploy surfaced:
- Add kubernetes-alpha provider to the LKE attributes output (@facets/
  kubernetes-details declares it and service/k8s consumes it; its absence
  failed the deploy with "missing provider kubernetes-alpha").
- Update k8s_version enum to 1.34/1.35 (default 1.35); 1.31-1.33 are no
  longer valid LKE versions.
- Add control_plane hardening: audit_logs_enabled and an optional
  api_server_allowed_cidrs (control_plane.acl IPv4 allow-list).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@anshulsao
anshulsao marked this pull request as ready for review June 8, 2026 18:34
@anshulsao
anshulsao merged commit 56af741 into main Jun 9, 2026
@anshulsao
anshulsao deleted the worktree-linode-modules branch June 9, 2026 11:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant